文件包含漏洞的利用方法有哪些
文件包含漏洞的利用方法有以下这些:
上传文件包含利用:利用包含漏洞将用户上传的php代码由包含函数加载,进而实现代码执行。条件是攻击者需知道上传文件的物理存放路径,还需要对上传文件所在目录有执行权限。
日志文件包含利用:攻击者可以向Web日志中插入PHP代码,通过文件包含漏洞来执行包含在Web日志中的PHP代码。
敏感文件包含利用:文件包含可直接读取操作系统中的敏感文件,如当前操作系统信息、用户名密码信息、各类配置文件等。
临时文件包含利用:如Session文件为例,session文件保存在服务器端,并且保存用户敏感信息。首先找到Session文件并包含一次,可以通过插件查看当前Session值来找到文件名。
远程文件包含利用:使用远程文件包含功能,首先要确定PHP是否开启远程文件包含功能选项,需要再php.ini配置文件中修改,修改后重启Web容器服务使其生效,可以远程获取服务器的信息。
文件包含漏洞的防护手段有以下这些:
文件名验证防护:包含文件验证是指对可保护文件名设置黑名单或白名单、文件后缀名固定等。如果需要使用文件包含,则通过使用白名单的方法对要包含的文件进行限制,这样可以做到既使用了文件包含,又可以防止文件包含漏洞。
文件名验证绕过防护:这防护手段主要有两种方式一种方式是在文件后缀名处下手,另一种方式是通过目录长度限制来截断。严格限制包含中的参数,取消那些不可控的参数。
中间件安全配置防护:合理地配置中间件的安全选项也会有良好的防护效果,这主要通过调整中间件及PHP的安全配置,使得用户在调用文件时进行基本的过滤及限制。
禁用相应函数防护:如果不需要文件包含,则关闭相应的文件包含函数,防止远程文件包含,这是最安全的办法。
关闭威胁配置防护:可以将PHP中的一些危险配置直接关闭,由于远程文件的不可信任性及不确定性,在开发中直接禁止远程文件包含选项。